// pages/map/map.ts
import { debounce } from "../../utils/util"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    longitude: 0 as number,
    latitude: 0 as number,
    markers: [] as Array<Markers>,// 地图上展示的点
    location: {} as Location,// 用户查询的地址
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    this.getPermission();
  },
  // 获取权限
  getPermission() {
    wx.getSetting({
      success: (res) => {
        if (!res.authSetting['scope.userLocation']) {
          wx.authorize({
            scope: 'scope.userLocation',
            success: () => {
              // 用户已授权，可以继续使用 getLocation
              this.getUserLocation();
            },
            fail: (err) => {
              console.error('授权失败:', err);
            }
          });
        } else {
          // 已经有授权，可以直接使用 getLocation
          this.getUserLocation();
        }
      }
    });
  },
  // 获取位置
  getUserLocation(): void {
    const temp = wx.createMapContext("map", this);
    console.log(temp)
    wx.getLocation({
      type: 'gcj02', // 返回可以用于 wx.openLocation 的坐标
      success: (res) => {
        const latitude = res.latitude;
        const longitude = res.longitude;
        this.setData({
          latitude,
          longitude,
          markers: [{
            id: 1,
            latitude,
            longitude,
            name: '当前位置',
            iconPath: '/assets/svgs/ball.svg', // 自定义图标路径
            width: 50,
            height: 50
          }]
        });
      },
      fail: (err: any) => {
        console.log(err)
      }
    });
  },
  // 选择位置
  search(): void {
    if (this.data.location.address) {
      wx.openLocation({
        latitude: this.data.location.latitude,
        longitude: this.data.location.longitude,
        scale: 18,
        name: this.data.location.name,
        address: this.data.location.address
      });
    } else {
      wx.chooseLocation({
        success: (res: Location) => {
          this.setData({
            location: res
          })
        },
        fail: (err) => {
          console.error(err);
        }
      });
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})